<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Account extends MX_Controller {
	private $module = 'account';
	private $table = 'user';
	function __construct(){
		parent::__construct();
		$this->load->model($this->module.'_model','model');
		if($this->uri->segment(1)=='admincp'){
			if($this->uri->segment(2)!='login'){
				if(!$this->session->userdata('userInfo')){
					header('Location: '.base_url().'admincp/login');
					return false;
				}
			}
			$this->template->set_template('admincontrolpanel');
			$this->template->write('title','Admin Control Panel');
		}
	}
	/*------------------------------------ Admin Control Panel ------------------------------------*/
	public function admincp_index($start = 0,$limit = 10){
		$default_func = 'created';
		$default_sort = 'DESC';
		
		$this->load->library('pagination');
		$config['total_rows'] 	= $this->model->getTotalsearchContent();
		$config['base_url'] 	= base_url().'admincp/'.$this->module.'/index/';
		$config['per_page'] 	= $limit;
		$config['num_links'] 	= 1;
		$config['uri_segment']  = 4;
		$this->pagination->initialize($config);
		
		$result = $this->model->getsearchContent($config['per_page'],$start);
		$data = array(
			'module'=>$this->module,
			'result'=>$result,
			'default_func'=>$default_func,
			'default_sort'=>$default_sort
		);
		
		$this->template->write_view('content','BACKEND/index',$data);
		$this->template->render();
	}
	
	
	public function admincp_update($id=0){
		$result[0] = array();
		if($id!=0){
			$result = $this->model->getDetailManagement($id);
		}
		$data = array(
			'result'=>$result[0],
			'module'=>$this->module,
			'id'=>$id
		);
		$this->template->write_view('content','BACKEND/editContent',$data);
		$this->template->render();
	}

	public function admincp_save(){
		if($_POST){
			if($this->model->saveManagement()){
				header('Location: '.base_url().'admincp/'.$this->module);
				return false;
			}
		}
	}
	
	public function admincp_del_all()
	{
		if($_POST)
		{
			if($this->input->post('checkAll') == 'on'){
				$check = $this->input->post('check');
				
				for($i = 0;$i <= count($check);$i++)
				{
					$this->admincp_delete($check[$i]);
				}
			}
		}
	}
	
	public function admincp_delete($id = 0){
		if($id != 0){
			$this->db->where('id',$id);
			if($this->db->delete(PREFIX.$this->table)){
				header('Location: '.base_url().'admincp/'.$this->module);
				return false;
			}
		}
	}
	
	public function admincp_ajaxLoadContent(){
		$this->load->library('AdminPagination');
		$config['total_rows'] = $this->model->getTotalsearchContent();
		$config['per_page'] = $this->input->post('per_page');
		$config['num_links'] = 3;
		$config['func_ajax'] = 'searchContent';
		$config['start'] = $this->input->post('start');
		$this->adminpagination->initialize($config);

		$result = $this->model->getsearchContent($config['per_page'],$this->input->post('start'));
		$data = array(
			'result'=>$result,
			'per_page'=>$this->input->post('per_page'),
			'start'=>$this->input->post('start'),
			'module'=>$this->module
		);
		$this->session->set_userdata('start',$this->input->post('start'));
		$this->load->view('BACKEND/ajax_loadContent',$data);
	}
	
	public function admincp_updateStatus(){
		if($this->input->post('status')==0){
			$status = 1;
		}else{
			$status = 0;
		}
		$data = array(
			'status'=>$status
		);
		$this->db->where('id', $this->input->post('id'));
		$this->db->update(PREFIX.$this->table, $data);
		
		$update = array(
			'status'=>$status,
			'id'=>$this->input->post('id'),
			'module'=>$this->module
		);
		$this->load->view('BACKEND/updateStatus',$update);
	}
	/*------------------------------------ End Admin Control Panel --------------------------------*/
	
	
	/*------------------------------------ FRONTEND ------------------------------------*/
	
	function index()
	{
		if($_POST)
		{
			$action = $this->input->post('action');
       
		    switch($action)
		    {
				case "Login":
					$this->login();
					break;
				case "Logout":
					$this->logout();
					break;
				case "Register":
					$this->register();
					break;
				case "Profile":
					$this->profile();
					break;
				case "ForgetPass":
					$this->forgetpass();
					break;
				default:
					$this->_refesh();
			}
		}
	}
	
	function _refesh()
    {
		$id = $this->session->userdata('userId');
		if($id)
		{
			$this->_xml_session_ok('login-success');
			return;
		}
		
		$this->_xml_session_error('unknown');
    }
	
	function _me()
	{
		
		$id = $this->session->userdata('userInfo');
		if($id)
		{
			$user = $this->base_model->get('*','cli_user',"is_active = 1 AND id = '$id'");
			if($user && $user->id)
			{
				$this->user = $user;
			}
		}
		return $this->user;
	}
	
	function profile()
	{
		if($_POST)
		{
			$user = $this->session->userdata('userInfo');
			$user_id = $this->session->userdata('userId');
			if($user && $user_id)
			{
				if($this->model->saveProfile())
				{
					$this->_xml_session_ok('profile-success');
				}else{
					$this->_xml_session_error('profile-error');
				}
			}else{
				$this->_xml_session_error('profile-error');
			}
		}
	}
	
	function login()
	{
		if(!empty($_POST)){
			$username = htmlentities($this->input->post('username'),ENT_QUOTES,'UTF-8');
			$password = md5($this->input->post('password'));
			$user = $this->model->checkLogin($username,$password);
			
			if($user && $user[0]->id){
				$this->session->set_userdata('userInfo',$user[0]->username);
				$this->session->set_userdata('userId',$user[0]->id);
				$this->_xml_session_ok('login-success');
			}else{
				$this->_xml_session_error('login-failed');
			}
		}else{
			$this->_xml_session_error('login-failed');
		}
	}
	
	function register()
	{
		if($_POST)
		{
			$username 		= htmlentities($this->input->post('username'),ENT_QUOTES,'UTF-8');
			$email 			= trim($this->input->post('email'));
			$checkUser		= $this->model->checkExists('username',$username);
			$checkEmail 	= $this->model->checkExists('email',$email);
			
			if($checkUser && count($checkUser) > 0)
			{
				$this->_xml_session_error('register-error-username');
				return;
			}elseif(empty($email) && count($checkEmail) > 0){
				$this->_xml_session_error('register-error-email');
				return;
			}else{
				$result = $this->model->saveProfile();
				if($result)
				{
					$this->session->set_userdata('userInfo',$username);
					$this->session->set_userdata('userId',$this->db->insert_id());
					$this->_xml_session_ok('register-success');
					return;
				}
			}
		}else{
			$this->_xml_session_error('register-error');
		}
	}
	
	function logout()
	{
		$this->session->unset_userdata('userInfo');
		$this->session->unset_userdata('userId');
		$this->session->sess_destroy();
		$this->_xml_session_error('logout');
	}
	
	function forgetPass()
    {
        $email = $this->input->post('email');
        $user = $this->base_model->get('*','cli_member',"email = '{$email}'",false);
        $xml = '';
        if(count($user) > 0)
        {
            $keycode = uniqid(rand(100, 1000));
            $link = PATH_URL."user/active_pass/".$email."/".$keycode;
            $sub = "Yêu cầu cung cấp mật khẩu chương trình “30 ngày yêu”";
            $noidung = "Chào <b>".$user->username."</b>,<br/>";
			$noidung .= "Chúng tôi đã nhận được yêu cầu cung cấp lại mật khẩu đăng nhập vào trang thành viên chương trình “30 ngày yêu” http://www.samsung.com/vn/galaxynote của bạn.<br/>";
			$noidung .= "Vui lòng bỏ qua email này nếu bạn không yêu cầu cung cấp lại mật khẩu. Nếu bạn đã thực hiện yêu cầu này, vui lòng <a href='".$link."'>nhấp vào đây</a> hoặc copy đường dẫn link bên dưới và paste vào thanh địa chỉ trên trình duyệt để hoàn tất việc lấy lại mật khẩu.<br/>";
			$noidung .= "Link: <a href='".$link."'>Lấy lại mật khẩu chương trình “30 ngày yêu”.</a><br/>";
			$noidung .= "Thân ái,<br/>";
			$noidung .= "Samsung Mobile Vietnam <br/>";
            
             /* Send Mail */
			$th = $this->sendMail($noidung, $sub, $email);
            /* End Send Mail*/
            
            if(!$th) 
            {
				$xml .= '<param method="setSession" name="message" type="String">Có lỗi xãy ra trong quá trình xử lý.</param>';
            } 
            else 
            {
				$this->base_model->update('cli_user',array('keycode'=>$keycode),'id = '.$user->id);
				$xml .= '<param method="setSession" name="message" type="String">Bạn vui lòng kiểm tra email để hoàn tất việc lấy lại mật khẩu.</param>';
            }
        }   
        else
        {
            $xml .= '<param method="setSession" name="message" type="String">Email này không tồn tại trong hệ thống</param>';
        } 
        
        header_xml();
        echo $xml;
        footer_xml();
    }
	
	function active_pass($email = '',$keycode = '')
    {
        $user = $this->base_model->get('*','cli_member',"email LIKE '".$email."' AND keycode = '".$keycode."'");
        
        if(count($user) > 0)
        {
            $pass = ramdom_string(6);
            $sub = "Mật khẩu mới  chương trình “30 ngày yêu”.";
            $noidung  = "Chào <strong>".$user->username."</strong>,<br/>";
			$noidung .= "Chúng tôi đã nhận được yêu cầu thay đổi mật khẩu của bạn cho chương trình “30 ngày yêu” http://www.samsung.com/vn/galaxynote.<br/>";
			$noidung .= "Vui lòng sử dụng mật khẩu bên dưới để đăng nhập vào tài khoản của bạn.<br/>";
			$noidung .= "Mật khẩu mới: <strong>".$pass."</strong><br/>";
			$noidung .= "Cảm ơn bạn đã tham gia chương trình “30 ngày yêu”.<br/>";
			$noidung .= "Thân ái,<br/>";
			$noidung .= "Samsung Mobile Vietnam";
            
			 /* Send Mail */
			$th = $this->sendMail($noidung, $sub, $email);
            /* End Send Mail*/
            
            if(!$th) 
            {
              echo '<script> alert("Lỗi xãy ra trong quá trình gửi mail");</script>';
            } 
            else 
            {
              $this->base_model->update('cli_user',array('keycode'=>'','password'=>md5($pass)),'id = '.$user->id);
              echo '<script> alert("Bạn vui lòng kiểm email để lấy mật khẩu");</script>';
            }
        }   
        else
        {
            echo '<script> alert("Email này không tồn tại trong hệ thống.");</script>';
        }
    }
	
	function uploadavatar()
	{

		if(is_array($_FILES) && array_key_exists('file', $_FILES))
        {
            $file = $_FILES['file']['tmp_name'];
			$file_name = $this->input->post('thumb');
			if($this->input->post('thumb') && $this->input->post('thumb') != 'default.jpg')
			{
				@unlink(DIR_AVATAR.$file_name);            
			}
			
			if($file_name && $this->_upload_file_type($file_name))
			{
				$file_name = $file_name;
				$file_name = $_FILES['file']['name'];
				$file_name = $this->_upload_file_name($file_name);
			}else{
				$file_name = $_FILES['file']['name'];
				$file_name = $this->_upload_file_name($file_name);
			}
			
			
            @resize_avatar($file, DIR_AVATAR . $file_name, 168, 168, true, true);
            
			if(is_file(DIR_AVATAR . $file_name))
			{	
				header_xml();
				echo "<status>true</status>";
				echo "<message><![CDATA[Thay avatar thành công.]]></message>";
				echo "<name><![CDATA[" . $file_name . "]]></name>";
				footer_xml();
				return;
			}
        }
		header_xml();
		echo "<status>false</status>";
		echo "<message><![CDATA[[File upload không hợp lệ.]]></message>"; 
        footer_xml();
	}
	
	function _upload_file_type($filename, $default = false)
	{
		switch(strtolower(substr($filename, -4, 4)))
		{
			case '.jpg':
			case 'jpeg': return '.jpg';
			case '.png': return '.png';
		}
		return $default;
	}
    
    function _upload_file_name($filename, $ext = false) 
    {
		$file_ext = $this->_upload_file_type($filename);
		return $ext == true ? $file_ext : $this->_uniq() . $file_ext;
	}
	
	function load_province()
    {
        $data = $this->model->getProvince();
        
        header_xml();
        foreach($data as $dt)
        {
            echo "<item>";
            echo "<id>".$dt->id."</id>";
            echo "<name>".$dt->name."</name>";
            echo "</item>";
        }
        footer_xml();
    }
	
	function _xml_session_ok($status)
	{
		$uid = $this->session->userdata('userId');
		if($uid)
		{
			$result =  $this->model->getDetailManagement($uid);
			if(empty($result[0]->avatar)){
				$avatar = 'default.jpg';
			}else{
				$avatar = $result[0]->avatar;
			}
			
			header_xml();
			echo '<param method="clearSession" name="action" />';
			echo '<param method="clearSession" name="password" />';
			echo '<param method="setSession" name="id" type="String">'.$result[0]->id.'</param>';
			echo '<param method="setSession" name="username" type="String">'.$result[0]->username.'</param>';
			echo '<param method="setSession" name="email" type="String">'.$result[0]->email.'</param>';
			echo '<param method="setSession" name="phone" type="String">'.$result[0]->phone.'</param>';
			echo '<param method="setSession" name="fullname" type="String">'.$result[0]->fullname.'</param>';
			echo '<param method="setSession" name="cmnd" type="String">'.$result[0]->cmnd.'</param>';
			echo '<param method="setSession" name="address" type="String">'.$result[0]->address.'</param>';
			echo '<param method="setSession" name="birthday" type="String">'.(date('d/m/Y',strtotime($result[0]->birth))).'</param>';
			echo '<param method="setSession" name="avatar" type="String">'.$avatar.'</param>';
			echo '<param method="setSession" name="login" type="Boolean">true</param>';
			echo '<param method="setSession" name="status" type="String">'.$status.'</param>';
			$this->_xml_session_default();
			footer_xml();
		}
	}
	
	function _xml_session_error($status)
	{
		header_xml();
		echo '<param method="clearSession" name="id" />';
		echo '<param method="clearSession" name="username" />';
		echo '<param method="clearSession" name="email" />';
		echo '<param method="clearSession" name="action" />';
		echo '<param method="clearSession" name="password" />';
		echo '<param method="clearSession" name="fullname" />';
		echo '<param method="setSession" name="login" type="Boolean">false</param>';
		echo '<param method="setSession" name="status" type="String">'.$status.'</param>';
		$this->_xml_session_default();
		footer_xml();
	}
	
	function _xml_session_default()
	{
		echo '<param method="setSession" name="url_upload_avatar" type="String">'.PATH_URL.'account/uploadavatar</param>';
		echo '<param method="setSession" name="baseurl" type="String">'.LINK_AVATAR.'</param>';
		//echo '<param method="setSession" name="url_contest" type="String">'.PATH_URL.'contest/list_contest_me</param>';
	}
	/*------------------------------------ End FRONTEND --------------------------------*/
}